import Vue from 'vue'
import { addClass } from '@/global/utils/index'
/**
* 常用选择对话框
* treeNode：选择机构目录
* rootorg：选择主机构
* suborg：选择部门/科室/班组
* staff: 选择机构员工
* manageOrgStaff: 选择单位领导（管理机构人员）
* workgroupStaff: 选择工作群组员工，可设置workgroupName只加载指定群组成员
* jobPositionStaff: 选择工作岗位人员，可设置jobPositionCode只加载指定岗位人员
* orgId：选择staff时可用，指定机构ID，orgId非空，忽略rootOrgCode参数
* rootOrgCode：staff时可用，指定根机构ID，为空时使用loginUser.orgCode
* orgLevel: staff、suborg时可用，可选机构级别，多级使用英文半角“,”分隔，staff并且orgLevel=1表示选择单位领导
* workgroup: 选择工作群组
* jobPosition: 选择工作岗位
* multiple: 是否可以多选，默认为否
* showemail:选择员工时，是否显示邮箱地址，默认不显示
* showmobile:选择员工时，是否显示手机号码，默认不显示
* showeaccount:选择员工时，是否显示账号，默认不显示
* orgSelf: 选择员工时，返回结果是否包含orgid自身机构,默认为否
* separate：多值默认分隔符，默认为中文逗号“、”
*/
Vue.directive('select-dialog', {
    attrs: null,
    inserted(el, binding, vnode) {
        el.attrs = vnode.data.attrs

        const openSelectDialog = () => {
            if (vnode.data.model === undefined) {
                vnode.data.model = { 'expression': 'selectDialog' }
            }
            let orgCode = vnode.data.attrs['root-org-code']
            if ((orgCode === null || orgCode === '') && vnode.context.vo) {
                orgCode = vnode.context.vo.orgCode
                vnode.data.attrs['root-org-code'] = orgCode
            }
            if (orgCode === null || orgCode === '') {
                vnode.context.$alert('未指定机构！', '操作提示', { type: 'warning' })
                return
            }

            vnode.context.$bus.emit('openSelectDialog', el, binding, vnode, 'tree')
        }

        if (el.innerHTML.indexOf('disabled="disabled"') !== -1) {
            return
        }

        if (el.innerHTML.indexOf('class="el-icon-more"') !== -1) {
            return
        } else if (el.tagName === 'BUTTON' || el.tagName === 'A') {
            el.removeEventListener('click', openSelectDialog)
            el.addEventListener('click', openSelectDialog)
            return
        }

        const groupDiv = document.createElement('div')
        addClass(groupDiv, 'el-input-group')
        addClass(groupDiv, 'el-input-group--append')

        const btn = document.createElement('div')
        btn.className = 'el-input-group__append'
        btn.innerHTML = '<button data-v-4e746fc5="" type="button" class="el-button el-button--default el-button--medium"><!----><i class="el-icon-more"></i><!----></button>'
        btn.addEventListener('click', openSelectDialog)

        for (let i = 0; i < el.children.length; i++) {
            groupDiv.appendChild(el.children[i])
        }
        groupDiv.appendChild(btn)

        el.innerHTML = ''
        el.appendChild(groupDiv)
    },
    update(el, binding, vnode) {
        el.attrs = vnode.data.attrs
    }
})

